<!DOCTYPE html>
<meta name="dart.unittest" content="full-stack-traces">
<title> element_upgrade_test </title>
<style>
   .unittest-table { font-family:monospace; border:1px; }
   .unittest-pass { background: #6b3;}
   .unittest-fail { background: #d55;}
   .unittest-error { background: #a11;}
</style>
<script src="/packages/web_components/webcomponents.js"></script>
<script src="/packages/web_components/dart_support.js"></script>

<body>
  <h1> Running element_upgrade_test </h1>

<script>
var Foo = function() {};
Foo.prototype = Object.create(HTMLElement.prototype);
Foo.prototype.createdCallback = function() {
  this.fooCreated = true;
  this.textContent = 'constructed';

  // Tell the Dart side that this was created.
  // For testing purposes, for real code this would use a different mechanism.
  window.upgradeListener(this);
};

Foo.prototype.doSomething = function() {
  this.textContent = 'didSomething';
  return 'didSomething';
};

Foo = document.registerElement('x-foo', Foo);

function validateIsFoo(element) {
  if (!(element instanceof Foo)) {
    throw Error('Element is not a Foo');
  }

  if (!element.fooCreated) {
    throw Error('Expected fooCreated to be set');
  }
}
</script>

  <script type="text/javascript"
      src="/root_dart/tools/testing/dart/test_controller.js"></script>
  %TEST_SCRIPTS%
</body>
